/**
 *  GuiFont.java
 *
 *  Created on 5 de junio de 2007
 *
 *  @author     Lobsang Alvites Szaler (Mr.Byte)
 *  @version    0.14
 *  @company    Soluciones Info Moviles (SIM)
 *
 */

package sim.framework.font;

import  javax.microedition.lcdui.Image;

import sim.framework.gui.*;

public class FontSystem {
    private     Gui         m_gui;          // [RESERVED] GUI reference
    public      FontSingle  medium;         // [USER] obj. font Medium 
    public      FontSingle  mediumbold;     // [USER] obj. font Medium Bold
    
    public FontSystem() {
        try {
            medium = new FontSingle( this, "/gui/fntmed.png", mem_font_medium );
            mediumbold = new FontSingle( this, "/gui/fntmedbold.png", mem_font_medium_bold );
        } catch( Exception _ex ) {
            System.out.println(">>> [FontSystem] " + _ex);
        }
    }

    public void init( Gui gui ) {
        m_gui = gui;
        medium.init(m_gui);
        mediumbold.init(m_gui);
    }
    

    // --------------------------------------------------
    //  FONT DEFINITION (medium)
    // --------------------------------------------------
    
    private final short mem_font_medium[] = {
        13,         // font-set cell height
        32,         // offset start of charset ascii (begins at Space)
        136,        // last ascii charset in the font
        23,         // horiz. charset pitch (that's # of chars per line)
        4, 0, 1,    // [space]
        1, 2, 9,   // !
        4, 2, 3,    // "
        6, 2, 9,    // #
        6, 2, 10,   // $
        7, 2, 9,    // %
        5, 2, 9,    // &
        1, 1, 3,    // '
        2, 1, 11,   // (
        2, 1, 11,   // )
        3, 5, 3,    // *
        5, 4, 5,    // +
        2,10, 2,    // ,
        3, 6, 1,    // -
        1,10, 1,    // .
        4, 3, 9,    // /
        5, 2, 9,    // 0
        3, 2, 9,    // 1
        5, 2, 9,    // 2
        5, 2, 9,    // 3
        5, 2, 9,    // 4
        5, 2, 9,    // 5
        5, 2, 9,    // 6
        5, 2, 9,    // 7
        5, 2, 9,    // 8
        5, 2, 9,    // 9
        2, 4, 6,    // :
        2, 5, 7,    // ;
        4, 3, 7,    // <
        4, 5, 3,    // =
        4, 3, 7,    // >
        5, 2, 9,    // ?
        10,2, 10,   // @
        7, 2, 9,    // A
        5, 2, 9,    // B
        6, 2, 9,    // C
        6, 2, 9,    // D
        5, 2, 9,    // E
        5, 2, 9,    // F
        6, 2, 9,    // G
        6, 2, 9,    // H
        1, 2, 9,    // I
        4, 2, 10,   // J
        6, 2, 9,    // K
        5, 2, 9,    // L
        7, 2, 9,    // M
        6, 2, 9,    // N
        6, 2, 9,    // O
        6, 2, 9,    // P
        6, 2, 9,    // Q
        6, 2, 9,    // R
        5, 2, 9,    // S
        6, 2, 9,    // T
        6, 2, 9,    // U
        7, 2, 9,    // V
        9, 2, 9,    // W
        7, 2, 9,    // X
        7, 2, 9,    // Y
        7, 2, 9,    // Z
        2, 1, 11,   // [
        4, 1, 9,    // \
        2, 1, 11,   // ]
        5, 1, 3,    // ^
        8, 0, 0,    // _    [free]
        8, 0, 0,    // `    [free]
        5, 5, 6,    // a
        5, 2, 9,    // b
        5, 5, 6,    // c
        5, 2, 9,    // d
        5, 5, 6,    // e
        2, 2, 9,    // f
        5, 5, 8,    // g
        5, 2, 9,    // h
        1, 2, 9,    // i
        2, 2, 11,   // j
        5, 2, 9,    // k
        1, 2, 9,    // l
        7, 5, 6,    // m
        5, 5, 6,    // n
        5, 5, 6,    // o
        5, 5, 8,    // p
        5, 5, 8,    // q
        2, 5, 6,    // r
        4, 5, 6,    // s
        2, 3, 8,    // t
        5, 5, 6,    // u
        5, 5, 6,    // v
        7, 5, 6,    // w
        4, 5, 6,    // x
        4, 5, 8,    // y
        4, 5, 6,    // z
        3, 2, 11,   // {
        1, 2, 10,   // |
        3, 2, 11,   // }
        8, 0, 13,   // ~ [GARBAGE] 126
        5, 0, 13,   // [DEL] CURSOR 127
        5, 2, 9,    // á 128
        5, 2, 9,    // é 129
        2, 2, 9,    // í 130
        5, 2, 9,    // ó 131
        5, 2, 9,    // ú 132
        5, 2, 9,    // ñ 133
        6, 0, 11,   // Ñ 134
        5, 4, 9,    // ¿ 135
        1, 4, 9,    // ¡ 136
    };

    
    // --------------------------------------------------
    //  FONT DEFINITION (medium bold)
    // --------------------------------------------------
    
    private final short mem_font_medium_bold[] = {
        13,         // font-set cell height
        32,         // offset start of charset ascii (begins at Space)
        136,        // last ascii charset in the font
        23,         // horiz. charset pitch (that's # of chars per line)
        5, 0, 1,    // [space]
        2, 2, 9,    // !
        5, 2, 3,    // "
        7, 2, 9,    // #
        7, 1, 11,   // $
        8, 2, 9,    // %
        7, 2, 9,    // &
        2, 2, 3,    // '
        3, 1, 11,   // (
        3, 1, 11,   // )
        5, 5, 3,    // *
        6, 4, 5,    // +
        3, 10,2,    // ,
        3, 6, 1,    // -
        2, 10,1,    // .
        5, 2, 9,    // /
        6, 2, 9,    // 0
        4, 2, 9,    // 1
        6, 2, 9,    // 2
        6, 2, 9,    // 3
        6, 2, 9,    // 4
        6, 2, 9,    // 5
        6, 2, 9,    // 6
        6, 2, 9,    // 7
        6, 2, 9,    // 8
        6, 2, 9,    // 9
        2, 4, 6,    // :
        3, 5, 7,    // ;
        5, 4, 7,    // <
        6, 6, 3,    // =
        5, 4, 7,    // >
        6, 2, 9,    // ?
        11,2, 10,   // @
        8, 2, 9,    // A    ... BOLD
        6, 2, 9,    // B
        7, 2, 9,    // C
        7, 2, 9,    // D
        6, 2, 9,    // E
        6, 2, 9,    // F
        7, 2, 9,    // G
        7, 2, 9,    // H
        2, 2, 9,    // I
        5, 2, 9,    // J
        7, 2, 9,    // K
        6, 2, 9,    // L
        8, 2, 9,    // M
        8, 2, 9,    // N
        7, 2, 9,    // O
        7, 2, 9,    // P
        7, 2, 10,   // Q
        7, 2, 9,    // R
        6, 2, 9,    // S
        6, 2, 9,    // T
        7, 2, 9,    // U
        7, 2, 9,    // V
        12, 2, 9,   // W
        8, 2, 9,    // X
        8, 2, 9,    // Y
        8, 2, 9,    // Z
        3, 1, 11,   // [
        5, 2, 9,    // \
        3, 1, 11,   // ]
        6, 1, 3,    // ^
        8, 0, 0,    // _
        8, 1, 4,    // `
        6, 5, 6,    // a    ... BOLD
        6, 2, 9,    // b
        6, 5, 6,    // c
        6, 2, 9,    // d
        6, 5, 6,    // e
        3, 2, 9,    // f
        6, 5, 8,    // g
        6, 2, 9,    // h
        2, 2, 9,    // i
        3, 2, 11,   // j
        6, 2, 9,    // k
        2, 2, 9,    // l
        8, 5, 6,    // m
        6, 5, 6,    // n
        6, 5, 6,    // o
        6, 5, 8,    // p
        6, 5, 8,    // q
        3, 5, 6,    // r
        5, 5, 6,    // s
        3, 3, 8,    // t
        6, 5, 6,    // u
        6, 5, 6,    // v
        8, 5, 6,    // w
        5, 5, 6,    // x
        5, 5, 8,    // y
        5, 5, 6,    // z
        4, 2, 11,   // {
        2, 2, 10,   // |
        4, 2, 11,   // }
        8, 0, 13,   // ~ [GARBAGE] 126
        6, 0, 13,   // [DEL] CURSOR 127
        6, 2, 9,    // á 128
        6, 2, 9,    // é 129
        3, 2, 9,    // í 130
        6, 2, 9,    // ó 131
        6, 2, 9,    // ú 132
        6, 2, 9,    // ñ 133
        7, 0, 11,   // Ñ 134
        6, 4, 9,    // ¿ 135
        2, 4, 9,    // ¡ 136
    };  // bold table
    
    // --------------------------------------------------
    //  SPECIAL CHARACTERS
    //  The String contains NON-standard characters to be used in the app.
    //  The order they are added MUST BE the same as drawn in the font's image.
    //  Font will use a hashtable to retrieve all characters equal or higher
    //  than NON_ASCII.
    
    public      static final int    CURSOR = 127;       // CURSOR char
    protected   final int           NON_ASCII = 128;    // from 128 there are special chars
    
    protected   final String mem_non_ascii = "áéíóúñÑ¿¡";
    
}
